home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1994-07-11 | 1.1 KB | 31 lines | [.Ob./.Ob4] |
- Syntax10.Scn.Fnt
- MODULE Fonts; (* mf 15.3.93 *)
- IMPORT
- SYS:=SYSTEM, Macintosh, Display;
- Name*= ARRAY 32 OF CHAR;
- Font*= POINTER TO FontDesc;
- FontDesc*= RECORD
- name*: Name;
- height*, minX*, maxX*, minY*, maxY*: INTEGER;
- raster*: Display.Font;
- next: Font
- END;
- Default*: Font;
- defaultName: ARRAY 32 OF CHAR;
- PROCEDURE This*(name: ARRAY OF CHAR): Font;
- VAR fnt: Font; map: Macintosh.FontMapRealPtr; fntNum, fntSize, fntFace: INTEGER;
- BEGIN fnt:=Default;
- LOOP
- IF fnt=NIL THEN EXIT ELSIF fnt.name=name THEN RETURN fnt ELSE fnt:=fnt.next END
- END;
- Macintosh.GetFontInfo(name, fntNum, fntSize, fntFace);
- IF fntNum=0 THEN RETURN Default END;
- map:=SYS.VAL (Macintosh.FontMapRealPtr, Macintosh.NewFontMap(fntNum, fntSize, fntFace));
- NEW(fnt); COPY(name, fnt.name); fnt.raster:=SYS.VAL(Display.Font, map);
- fnt.height:=map.height; fnt.maxX:=map.widMax; fnt.minY:=map.ndescent; fnt.maxY:=map.ascent;
- IF Default # NIL THEN fnt.next:=Default.next; Default.next:=fnt END;
- RETURN fnt
- END This;
- BEGIN Macintosh.GetPar("Fonts.DefaultFontName", defaultName); Default:=This(defaultName)
- END Fonts.
-